উদাহরণ সহ WebClient কনফিগারেশন

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) WebClient কনফিগারেশন এবং Customization |
63
63

নিচে স্প্রিং বুট ক্লায়েন্টে (Spring Boot Client) WebClient ব্যবহার করে একটি উদাহরণ দেখানো হয়েছে। WebClient আধুনিক পদ্ধতি যা স্প্রিং বুট ২.০ থেকে পরিচিত এবং এটি non-blocking এবং reactive প্রোগ্রামিং সমর্থন করে।


১. প্রজেক্ট তৈরি করুন

Spring Initializr-এ যান এবং Spring Boot Starter WebFlux ডিপেনডেন্সি যুক্ত করে একটি নতুন প্রজেক্ট তৈরি করুন।


২. pom.xml ডিপেনডেন্সি যুক্ত করুন

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
</dependencies>

৩. WebClient কনফিগারেশন তৈরি করুন

WebClient Bean কনফিগারেশন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient.Builder webClientBuilder() {
        return WebClient.builder();
    }
}

৪. WebClient ব্যবহার করে API ক্লায়েন্ট তৈরি করুন

import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

@Service
public class ApiClient {
    private final WebClient webClient;

    public ApiClient(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder.baseUrl("https://jsonplaceholder.typicode.com").build();
    }

    // GET রিকোয়েস্ট
    public Mono<String> getData(String endpoint) {
        return webClient.get()
                .uri(endpoint)
                .retrieve()
                .bodyToMono(String.class);
    }

    // POST রিকোয়েস্ট
    public Mono<String> postData(String endpoint, Object requestBody) {
        return webClient.post()
                .uri(endpoint)
                .bodyValue(requestBody)
                .retrieve()
                .bodyToMono(String.class);
    }
}

৫. Controller ক্লাসে WebClient ব্যবহার করুন

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

@RestController
public class ClientController {
    private final ApiClient apiClient;

    public ClientController(ApiClient apiClient) {
        this.apiClient = apiClient;
    }

    // GET রিকোয়েস্ট
    @GetMapping("/fetch-data")
    public Mono<String> fetchData() {
        String endpoint = "/posts/1"; // উদাহরণ API Endpoint
        return apiClient.getData(endpoint);
    }

    // POST রিকোয়েস্ট
    @PostMapping("/send-data")
    public Mono<String> sendData(@RequestBody Object requestBody) {
        String endpoint = "/posts"; // উদাহরণ API Endpoint
        return apiClient.postData(endpoint, requestBody);
    }
}

৬. GET এবং POST রিকোয়েস্ট টেস্ট করুন

GET রিকোয়েস্ট টেস্ট:

  • API Endpoint: http://localhost:8080/fetch-data
  • এটি https://jsonplaceholder.typicode.com/posts/1 থেকে ডেটা রিট্রিভ করবে।

POST রিকোয়েস্ট টেস্ট:

  • API Endpoint: http://localhost:8080/send-data
  • Request Body (JSON):

    {
        "title": "foo",
        "body": "bar",
        "userId": 1
    }
    
  • এটি https://jsonplaceholder.typicode.com/posts API-তে POST করবে এবং রেসপন্স ফিরিয়ে দেবে।

৭. Reactive এবং Non-blocking আচরণ

WebClient এর reactive nature এর কারণে, এটি Mono বা Flux টাইপের ডেটা রিটার্ন করে, যা asynchronous ডেটা প্রসেস করতে ব্যবহার করা হয়। এটি ব্লকিং ছাড়াই API থেকে ডেটা রিট্রিভ করতে পারে।


৮. Error Handling যুক্ত করুন

WebClient এ Error Handling:

public Mono<String> getData(String endpoint) {
    return webClient.get()
            .uri(endpoint)
            .retrieve()
            .onStatus(
                status -> status.is4xxClientError() || status.is5xxServerError(),
                clientResponse -> Mono.error(new RuntimeException("Error: " + clientResponse.statusCode()))
            )
            .bodyToMono(String.class)
            .onErrorResume(e -> Mono.just("Fallback Response: " + e.getMessage()));
}

৯. উদাহরণ রেসপন্স

GET রেসপন্স:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

POST রেসপন্স:

{
    "id": 101,
    "title": "foo",
    "body": "bar",
    "userId": 1
}

WebClient এর সুবিধা:

  1. Non-blocking এবং Asynchronous: একাধিক রিকোয়েস্ট প্যারালালে প্রক্রিয়া করতে সক্ষম।
  2. Reactive Support: Mono এবং Flux ডেটা স্ট্রিম ম্যানেজ করতে ব্যবহৃত হয়।
  3. Error Handling: কাস্টম এক্সসেপশন হ্যান্ডলিং সহজ।
  4. নতুন প্রজেক্টের জন্য স্ট্যান্ডার্ড পদ্ধতি

WebClient হল Spring-এর ভবিষ্যত API ক্লায়েন্ট। তাই নতুন প্রজেক্টে RestTemplate এর পরিবর্তে WebClient ব্যবহার করার সুপারিশ করা হয়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion